
# 装饰器的使用示例
# 这个示例展示了如何使用装饰器来增强函数的功能
def outer(fn):
    def inner(*args, **kwargs):
        print("Before function call")
        result = fn(*args, **kwargs)
        print("After function call")
        return result
    return inner

def sing():
    print("Singing a song!")

@outer
def dance():
    print("Dancing to the music!")

print('=' * 40)
sing()

print('=' * 40)
dance()




# 回调函数的使用示例
# 这个示例展示了如何使用回调函数来传递函数作为参数
def fun(callback):
    print("Executing fun")
    
    power = 2
    result = callback(power)
    print(f"Result from callback: {result}")

def square(x):
    return 10 ** x

print('=' * 40)
squ = square(2)
print(f"Square result: {squ}")

print('=' * 40)
fun(square)




# 生成器# 这个示例展示了如何使用生成器来生成一个序列
def generator():
    for i in range(5):
        yield i * 2 # 生成偶数序列
print('=' * 40)
gen = generator()
for value in gen:
    print(f"Generated value: {value}")